// 引入express框架创建服务器
const express = require('express');
const app = express();

// 引入连接数据库的模块
require('./model/connect');
// 引入数据库集合模块
// const { User } = require('./model/user');

const path = require('path');

// 引入解析post请求参数的模块
const bodyParser = require('body-parser');

// 引入express-session模块
const session = require('express-session');


// 配置模板相关文件
// 给后缀为art的文件用后者模板
app.engine('art', require('express-art-template'));
// 设置模板的默认根路径
app.set('views', path.join(__dirname, 'views'));
// 设置默认的后缀名
app.set('view engine', 'art');

// 处理session中间件
app.use(session({ secret: 'secret key' }));

// 接收post参数传给req.body
app.use(bodyParser({extended: false}));
// 开放静态访问资源
app.use(express.static(path.join(__dirname, 'public')));


// 引入admin路由模块
const admin = require('./router/admin');
// 引入home路由模块
const home = require('./router/home');
const { nextTick } = require('process');
const { join } = require('path');

// 拦截请求,判断用户登录状态中间件
app.use('/admin', require('./middleware/loginGuard'));  

app.use('/admin', admin);
app.use('/home', home);

// 错误信息中间件
app.use((err, req, res, next) => {
    // 把字符串解析成对象
    let result = JSON.parse(err);

    // 循环result对象, 把除了path的参数变成灵活的 放到params数组中
    let params = [];
    for (let k in result) {
        if (k != 'path') {
            params.push(k + '=' + result[k]);
        }
    };
    // 把params对象中的参数以&隔开  因为地址栏中识别参数是以&为分别符
    // params.join('&');
    res.redirect(`${ result.path }?${ params.join('&')}`);
})

// 监听端口
app.listen(80);
console.log('服务器启动成功，请访问localhost');